
public class No058 {
    /**
     * 牛客最近来了一个新员工Fish，每天早晨总是会拿着一本英文杂志，写些句子在本子上。
     * 同事Cat对Fish写的内容颇感兴趣，有一天他向Fish借来翻看，但却读不懂它的意思。
     * 例如，“student. a am I”。
     * 后来才意识到，这家伙原来把句子单词的顺序翻转了，正确的句子应该是“I am a student.”。
     * Cat对一一的翻转这些单词顺序可不在行，你能帮助他么？
     */
    public String ReverseSentence(String str) {
        if (str.length() == 0) return "";
        String[] s = str.split(" ");
        if (s.length == 0) return str;
        int lo = 0, hi = s.length - 1;
        while (lo < hi) {
            String temp = s[lo];
            s[lo] = s[hi];
            s[hi] = temp;
            lo++;
            hi--;
        }
        StringBuilder result = new StringBuilder();
        for (int i = 0; i < s.length - 1; i++) {
            result.append(s[i]).append(' ');
        }
        result.append(s[s.length - 1]);
        return result.toString();
    }

    /**
     * 汇编语言中有一种移位指令叫做循环左移（ROL），
     * 现在有个简单的任务，就是用字符串模拟这个指令的运算结果。
     * 对于一个给定的字符序列S，请你把其循环左移K位后的序列输出。
     * 例如，字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果，即“XYZdefabc”。
     * 是不是很简单？OK，搞定它！
     */
    public String LeftRotateString(String str, int n) {
        if (str.length() == 0) return "";
        StringBuilder sb = new StringBuilder(str);
        for (int i = 0; i < n; i++) {
            char temp = sb.charAt(0);
            sb.deleteCharAt(0).append(temp);
        }
        return sb.toString();
    }
}
